task-managment / src / app / dashboard / projects / [...id] / _components / ModifyCostsProjectSidebar.tsx
ModifyCostsProjectSidebar.tsx
Raw
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import React from "react";
import {
  Sheet,
  SheetContent,
  SheetDescription,
  SheetHeader,
  SheetTitle,
  SheetTrigger,
  SheetFooter,
} from "@/components/ui/sheet";
import {
  Form,
  FormControl,
  FormField,
  FormItem,
  FormLabel,
  FormMessage,
} from "@/components/ui/form";
import Loading from "@/components/Loading";
import useModifyProjectCosts from "../hooks/useModifyProjectCost";

const ModifyCostsProjectSidebar = ({ project }: { project: any }) => {
  const { open, setOpen, form, isInputChanged, isPending, onSubmit } =
    useModifyProjectCosts(project);

  return (
    <Sheet open={open} onOpenChange={setOpen}>
      <SheetTrigger asChild>
        <Button size="sm">Modificar</Button>
      </SheetTrigger>
      <SheetContent>
        <SheetHeader>
          <SheetTitle>Editar costos</SheetTitle>
          <SheetDescription>
            Define la cantidad de material usados cada dia.
          </SheetDescription>
        </SheetHeader>
        <Form {...form}>
          <form onSubmit={form.handleSubmit(onSubmit)}>
            <div className="grid gap-4 py-4 mt-10">
              <FormField
                control={form.control}
                name="costPerMeter"
                render={({ field }) => (
                  <FormItem>
                    <FormLabel>Costo por metro</FormLabel>
                    <FormControl>
                      <Input
                        min={0}
                        type="number"
                        placeholder="Ej: 8.5"
                        {...field}
                      />
                    </FormControl>

                    <FormMessage />
                  </FormItem>
                )}
              />
              <FormField
                control={form.control}
                name="laborCost"
                render={({ field }) => (
                  <FormItem>
                    <FormLabel>Mano de obra</FormLabel>
                    <FormControl>
                      <Input
                        min={0}
                        type="number"
                        placeholder="Ej: 2.5"
                        {...field}
                      />
                    </FormControl>

                    <FormMessage />
                  </FormItem>
                )}
              />
              <FormField
                control={form.control}
                name="totalCostMaterials"
                render={({ field }) => (
                  <FormItem>
                    <FormLabel>Costo total de materiales</FormLabel>
                    <FormControl>
                      <Input
                        min={0}
                        type="number"
                        placeholder="Ej: 2.5"
                        {...field}
                      />
                    </FormControl>

                    <FormMessage />
                  </FormItem>
                )}
              />

              <FormField
                control={form.control}
                name="totalCostPerMeter"
                render={({ field }) => (
                  <FormItem>
                    <FormLabel>Costo total por metro</FormLabel>
                    <FormControl>
                      <Input
                        min={0}
                        type="number"
                        placeholder="Ej: 2.5"
                        {...field}
                      />
                    </FormControl>

                    <FormMessage />
                  </FormItem>
                )}
              />
            </div>

            <SheetFooter>
              <Button disabled={!isInputChanged || isPending} type="submit">
                <span className="mr-2">
                  {isPending ? "Modificando" : "Modificar"}
                </span>
                {isPending && <Loading size={15} />}
              </Button>
            </SheetFooter>
          </form>
        </Form>
      </SheetContent>
    </Sheet>
  );
};

export default ModifyCostsProjectSidebar;